package qualomelhor.database;

import javax.persistence.Id;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Indexed;
import java.io.Serializable;

@Entity
public class PropriedadeProduto implements Serializable {

		private static final long serialVersionUID = 0;

		public static enum TipoItemComparacao {
			TEXTO(0, "Opinião"),
			BOOLEAN(1, "Possui / Não Possui"),
			NUMERICO_QUANTO_MAIOR_MELHOR(2, "Numérico quanto maior melhor"),
			NUMERICO_QUANTO_MENOR_MELHOR(3, "Numérico quanto menor melhor");

			private TipoItemComparacao(int id, String desc) {
				idTipoItemComparacao = id;
				descricao = desc;
			}

			public int getIdTipoItemComparacao() {
				return idTipoItemComparacao;
			}

			public String getDescricao() {
				return descricao;
			}

			private int idTipoItemComparacao;
			private String descricao;

			public boolean equals(TipoItemComparacao t) {
				return(this.getIdTipoItemComparacao() == t.getIdTipoItemComparacao());
			}
		};

	    @Id
	    private Long id; 

	    @Indexed
	    private String nomePropriedade;

	    private String descricao;

	    private TipoItemComparacao tipo;

	    private String enderecoFotoIcone;

	    public PropriedadeProduto() {

	    }

	    public boolean equals(PropriedadeProduto p) {
	    	boolean result = false;
	    	if (this.nomePropriedade.equals(p.getNomePropriedade())
	    		&&
	    		(this.tipo.equals(p.getTipo()))
	    		) {
	    		result = true;
	    	}
	    	return result;
	    }

	    public PropriedadeProduto(String nomePropriedade, String descricao, TipoItemComparacao tipo, String enderecoFotoIcone) {
	    	this.nomePropriedade = nomePropriedade;
	    	this.descricao = descricao;
	    	this.tipo = tipo;
	        this.enderecoFotoIcone = enderecoFotoIcone;
	    }

	    public Long getId() { 
	        return id; 
	    } 

	    public String getNomePropriedade() { 
	        return nomePropriedade;
	    }

	    public String getDescricao() { 
	        return descricao;
	    }

	    public TipoItemComparacao getTipo() { 
	        return tipo;
	    }

	    public String getEnderecoFotoIcone() {
	    	return enderecoFotoIcone;
	    }

	    public void setId(Long id) {
	    	this.id = id;
	    }

	    public void setNomePropriedade(String nomePropriedade) {
	    	this.nomePropriedade = nomePropriedade;
	    }

	    public void setDescricao(String descricao) {
	    	this.descricao = descricao;
	    }

	    public void setTipo(TipoItemComparacao tipo) {
	    	this.tipo = tipo;
	    }

	    public void setEnderecoFotoIcone(String enderecoFotoIcone) {
	    	this.enderecoFotoIcone = enderecoFotoIcone;
	    }
}